﻿using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.Extensions.DependencyInjection;
#nullable disable

namespace Snowy.Data
{
    public partial class ApplicationDbContext : DbContext
    {
      
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
        {
        }

        public virtual DbSet<SysApp> SysApps { get; set; }
        public virtual DbSet<SysCodeGenerate> SysCodeGenerates { get; set; }
        public virtual DbSet<SysCodeGenerateConfig> SysCodeGenerateConfigs { get; set; }
        public virtual DbSet<SysConfig> SysConfigs { get; set; }
        public virtual DbSet<SysDictDatum> SysDictData { get; set; }
        public virtual DbSet<SysDictType> SysDictTypes { get; set; }
        public virtual DbSet<SysEmp> SysEmps { get; set; }
        public virtual DbSet<SysEmpExtOrgPo> SysEmpExtOrgPos { get; set; }
        public virtual DbSet<SysEmpPo> SysEmpPos { get; set; }
        public virtual DbSet<SysFileInfo> SysFileInfos { get; set; }
        public virtual DbSet<SysMenu> SysMenus { get; set; }
        public virtual DbSet<SysNotice> SysNotices { get; set; }
        public virtual DbSet<SysNoticeUser> SysNoticeUsers { get; set; }
        public virtual DbSet<SysOauthUser> SysOauthUsers { get; set; }
        public virtual DbSet<SysOpLog> SysOpLogs { get; set; }
        public virtual DbSet<SysOrg> SysOrgs { get; set; }
        public virtual DbSet<SysPo> SysPos { get; set; }
        public virtual DbSet<SysRole> SysRoles { get; set; }
        public virtual DbSet<SysRoleDataScope> SysRoleDataScopes { get; set; }
        public virtual DbSet<SysRoleMenu> SysRoleMenus { get; set; }
        public virtual DbSet<SysSm> SysSms { get; set; }
        public virtual DbSet<SysTimer> SysTimers { get; set; }
        public virtual DbSet<SysUser> SysUsers { get; set; }
        public virtual DbSet<SysUserDataScope> SysUserDataScopes { get; set; }
        public virtual DbSet<SysUserRole> SysUserRoles { get; set; }
        public virtual DbSet<SysVisLog> SysVisLogs { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
         
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasAnnotation("Relational:Collation", "Chinese (Simplified)_China.936");

            modelBuilder.Entity<SysApp>(entity =>
            {
                entity.ToTable("sys_app");

                entity.HasComment("系统应用表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键id");

                entity.Property(e => e.Active)
                    .HasMaxLength(1)
                    .HasColumnName("active")
                    .HasComment("是否默认激活（Y-是，N-否）");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("应用名称");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("修改时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("修改人");
            });

            modelBuilder.Entity<SysCodeGenerate>(entity =>
            {
                entity.ToTable("sys_code_generate");

                entity.HasComment("代码生成基础配置");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.AuthorName)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("author_name")
                    .HasComment("作者姓名");

                entity.Property(e => e.BusName)
                    .HasMaxLength(255)
                    .HasColumnName("bus_name")
                    .HasComment("业务名");

                entity.Property(e => e.ClassName)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("class_name")
                    .HasComment("类名");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.GenerateType)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("generate_type")
                    .HasComment("生成位置类型");

                entity.Property(e => e.PackageName)
                    .HasMaxLength(255)
                    .HasColumnName("package_name")
                    .HasComment("包名称");

                entity.Property(e => e.TableComment)
                    .HasMaxLength(255)
                    .HasColumnName("table_comment")
                    .HasComment("功能名");

                entity.Property(e => e.TableName)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("table_name")
                    .HasComment("数据库表名");

                entity.Property(e => e.TablePrefix)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("table_prefix")
                    .HasComment("是否移除表前缀");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysCodeGenerateConfig>(entity =>
            {
                entity.ToTable("sys_code_generate_config");

                entity.HasComment("代码生成详细配置");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.CodeGenId)
                    .HasColumnName("code_gen_id")
                    .HasComment("代码生成主表ID");

                entity.Property(e => e.ColumnComment)
                    .HasMaxLength(255)
                    .HasColumnName("column_comment")
                    .HasComment("字段描述");

                entity.Property(e => e.ColumnKey)
                    .HasMaxLength(255)
                    .HasColumnName("column_key")
                    .HasComment("主键");

                entity.Property(e => e.ColumnKeyName)
                    .HasMaxLength(255)
                    .HasColumnName("column_key_name")
                    .HasComment("主外键名称");

                entity.Property(e => e.ColumnName)
                    .HasMaxLength(255)
                    .HasColumnName("column_name")
                    .HasComment("数据库字段名");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.DataType)
                    .HasMaxLength(255)
                    .HasColumnName("data_type")
                    .HasComment("物理类型");

                entity.Property(e => e.DictTypeCode)
                    .HasMaxLength(255)
                    .HasColumnName("dict_type_code")
                    .HasComment("字典code");

                entity.Property(e => e.EffectType)
                    .HasMaxLength(255)
                    .HasColumnName("effect_type")
                    .HasComment("作用类型（字典）");

                entity.Property(e => e.JavaName)
                    .HasMaxLength(255)
                    .HasColumnName("java_name")
                    .HasComment("java类字段名");

                entity.Property(e => e.JavaType)
                    .HasMaxLength(255)
                    .HasColumnName("java_type")
                    .HasComment("java类型");

                entity.Property(e => e.QueryType)
                    .HasMaxLength(255)
                    .HasColumnName("query_type")
                    .HasComment("查询方式");

                entity.Property(e => e.QueryWhether)
                    .HasMaxLength(255)
                    .HasColumnName("query_whether")
                    .HasComment("是否是查询条件");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("修改时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("修改人");

                entity.Property(e => e.WhetherAddUpdate)
                    .HasMaxLength(255)
                    .HasColumnName("whether_add_update")
                    .HasComment("增改");

                entity.Property(e => e.WhetherCommon)
                    .HasMaxLength(255)
                    .HasColumnName("whether_common")
                    .HasComment("是否是通用字段");

                entity.Property(e => e.WhetherRequired)
                    .HasMaxLength(255)
                    .HasColumnName("whether_required")
                    .HasComment("是否必填（字典）");

                entity.Property(e => e.WhetherRetract)
                    .HasMaxLength(255)
                    .HasColumnName("whether_retract")
                    .HasComment("列表是否缩进（字典）");

                entity.Property(e => e.WhetherTable)
                    .HasMaxLength(255)
                    .HasColumnName("whether_table")
                    .HasComment("列表展示");
            });

            modelBuilder.Entity<SysConfig>(entity =>
            {
                entity.ToTable("sys_config");

                entity.HasComment("系统参数配置表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.GroupCode)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("group_code")
                    .HasComment("常量所属分类的编码，来自于“常量的分类”字典");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("备注");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.SysFlag)
                    .HasMaxLength(1)
                    .HasColumnName("sys_flag")
                    .HasComment("是否是系统参数（Y-是，N-否）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");

                entity.Property(e => e.Value)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("value")
                    .HasComment("值");
            });

            modelBuilder.Entity<SysDictDatum>(entity =>
            {
                entity.ToTable("sys_dict_data");

                entity.HasComment("系统字典值表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("备注");

                entity.Property(e => e.Sort)
                    .HasColumnName("sort")
                    .HasComment("排序");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.TypeId)
                    .HasColumnName("type_id")
                    .HasComment("字典类型id");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");

                entity.Property(e => e.Value)
                    .IsRequired()
                    .HasColumnName("value")
                    .HasComment("值");
            });

            modelBuilder.Entity<SysDictType>(entity =>
            {
                entity.ToTable("sys_dict_type");

                entity.HasComment("系统字典类型表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("备注");

                entity.Property(e => e.Sort)
                    .HasColumnName("sort")
                    .HasComment("排序");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysEmp>(entity =>
            {
                entity.ToTable("sys_emp");

                entity.HasComment("员工表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.JobNum)
                    .HasMaxLength(100)
                    .HasColumnName("job_num")
                    .HasComment("工号");

                entity.Property(e => e.OrgId)
                    .HasColumnName("org_id")
                    .HasComment("所属机构id");

                entity.Property(e => e.OrgName)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("org_name")
                    .HasComment("所属机构名称");
            });

            modelBuilder.Entity<SysEmpExtOrgPo>(entity =>
            {
                entity.ToTable("sys_emp_ext_org_pos");

                entity.HasComment("员工附属机构岗位表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.EmpId)
                    .HasColumnName("emp_id")
                    .HasComment("员工id");

                entity.Property(e => e.OrgId)
                    .HasColumnName("org_id")
                    .HasComment("机构id");

                entity.Property(e => e.PosId)
                    .HasColumnName("pos_id")
                    .HasComment("岗位id");
            });

            modelBuilder.Entity<SysEmpPo>(entity =>
            {
                entity.ToTable("sys_emp_pos");

                entity.HasComment("员工职位关联表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.EmpId)
                    .HasColumnName("emp_id")
                    .HasComment("员工id");

                entity.Property(e => e.PosId)
                    .HasColumnName("pos_id")
                    .HasComment("职位id");
            });

            modelBuilder.Entity<SysFileInfo>(entity =>
            {
                entity.ToTable("sys_file_info");

                entity.HasComment("文件信息表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键id");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建用户");

                entity.Property(e => e.FileBucket)
                    .HasMaxLength(1000)
                    .HasColumnName("file_bucket")
                    .HasComment("文件仓库");

                entity.Property(e => e.FileLocation)
                    .HasColumnName("file_location")
                    .HasComment("文件存储位置（1:阿里云，2:腾讯云，3:minio，4:本地）");

                entity.Property(e => e.FileObjectName)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("file_object_name")
                    .HasComment("存储到bucket的名称（文件唯一标识id）");

                entity.Property(e => e.FileOriginName)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("file_origin_name")
                    .HasComment("文件名称（上传时候的文件名）");

                entity.Property(e => e.FilePath)
                    .HasMaxLength(1000)
                    .HasColumnName("file_path")
                    .HasComment("存储路径");

                entity.Property(e => e.FileSizeInfo)
                    .HasMaxLength(100)
                    .HasColumnName("file_size_info")
                    .HasComment("文件大小信息，计算后的");

                entity.Property(e => e.FileSizeKb)
                    .HasColumnName("file_size_kb")
                    .HasComment("文件大小kb");

                entity.Property(e => e.FileSuffix)
                    .HasMaxLength(50)
                    .HasColumnName("file_suffix")
                    .HasComment("文件后缀");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("修改时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("修改用户");
            });

            modelBuilder.Entity<SysMenu>(entity =>
            {
                entity.ToTable("sys_menu");

                entity.HasComment("系统菜单表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Application)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("application")
                    .HasComment("应用分类（应用编码）");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.Component)
                    .HasMaxLength(255)
                    .HasColumnName("component")
                    .HasComment("组件地址");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Icon)
                    .HasMaxLength(255)
                    .HasColumnName("icon")
                    .HasComment("图标");

                entity.Property(e => e.Link)
                    .HasMaxLength(255)
                    .HasColumnName("link")
                    .HasComment("链接地址");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.OpenType)
                    .HasColumnName("open_type")
                    .HasComment("打开方式（字典 0无 1组件 2内链 3外链）");

                entity.Property(e => e.Permission)
                    .HasMaxLength(255)
                    .HasColumnName("permission")
                    .HasComment("权限标识");

                entity.Property(e => e.Pid)
                    .HasColumnName("pid")
                    .HasComment("父id");

                entity.Property(e => e.Pids)
                    .IsRequired()
                    .HasColumnName("pids")
                    .HasComment("父ids");

                entity.Property(e => e.Redirect)
                    .HasMaxLength(255)
                    .HasColumnName("redirect")
                    .HasComment("重定向地址");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("备注");

                entity.Property(e => e.Router)
                    .HasMaxLength(255)
                    .HasColumnName("router")
                    .HasComment("路由地址");

                entity.Property(e => e.Sort)
                    .HasColumnName("sort")
                    .HasComment("排序");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.Type)
                    .HasColumnName("type")
                    .HasDefaultValueSql("1")
                    .HasComment("菜单类型（字典 0目录 1菜单 2按钮）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("修改时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("修改人");

                entity.Property(e => e.Visible)
                    .HasMaxLength(1)
                    .HasColumnName("visible")
                    .HasComment("是否可见（Y-是，N-否）");

                entity.Property(e => e.Weight)
                    .HasColumnName("weight")
                    .HasComment("权重（字典 1系统权重 2业务权重）");
            });

            modelBuilder.Entity<SysNotice>(entity =>
            {
                entity.ToTable("sys_notice");

                entity.HasComment("通知表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.CancelTime)
                    .HasPrecision(6)
                    .HasColumnName("cancel_time")
                    .HasComment("撤回时间");

                entity.Property(e => e.Content)
                    .HasColumnName("content")
                    .HasComment("内容");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.PublicOrgId)
                    .HasColumnName("public_org_id")
                    .HasComment("发布机构id");

                entity.Property(e => e.PublicOrgName)
                    .HasMaxLength(50)
                    .HasColumnName("public_org_name")
                    .HasComment("发布机构名称");

                entity.Property(e => e.PublicTime)
                    .HasPrecision(6)
                    .HasColumnName("public_time")
                    .HasComment("发布时间");

                entity.Property(e => e.PublicUserId)
                    .HasColumnName("public_user_id")
                    .HasComment("发布人id");

                entity.Property(e => e.PublicUserName)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("public_user_name")
                    .HasComment("发布人姓名");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0草稿 1发布 2撤回 3删除）");

                entity.Property(e => e.Title)
                    .HasMaxLength(1000)
                    .HasColumnName("title")
                    .HasComment("标题");

                entity.Property(e => e.Type)
                    .HasColumnName("type")
                    .HasComment("类型（字典 1通知 2公告）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("修改时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("修改人");
            });

            modelBuilder.Entity<SysNoticeUser>(entity =>
            {
                entity.ToTable("sys_notice_user");

                entity.HasComment("系统用户数据范围表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.NoticeId)
                    .HasColumnName("notice_id")
                    .HasComment("通知公告id");

                entity.Property(e => e.ReadTime)
                    .HasPrecision(6)
                    .HasColumnName("read_time")
                    .HasComment("阅读时间");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0未读 1已读）");

                entity.Property(e => e.UserId)
                    .HasColumnName("user_id")
                    .HasComment("用户id");
            });

            modelBuilder.Entity<SysOauthUser>(entity =>
            {
                entity.ToTable("sys_oauth_user");

                entity.HasComment("第三方认证用户信息表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.AccessToken)
                    .HasMaxLength(255)
                    .HasColumnName("access_token")
                    .HasComment("用户授权的token");

                entity.Property(e => e.Avatar)
                    .HasMaxLength(500)
                    .HasColumnName("avatar")
                    .HasComment("头像");

                entity.Property(e => e.Blog)
                    .HasMaxLength(255)
                    .HasColumnName("blog")
                    .HasComment("用户网址");

                entity.Property(e => e.Company)
                    .HasMaxLength(255)
                    .HasColumnName("company")
                    .HasComment("所在公司");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建用户");

                entity.Property(e => e.Email)
                    .HasMaxLength(255)
                    .HasColumnName("email")
                    .HasComment("邮箱");

                entity.Property(e => e.Gender)
                    .HasMaxLength(50)
                    .HasColumnName("gender")
                    .HasComment("性别");

                entity.Property(e => e.Location)
                    .HasMaxLength(255)
                    .HasColumnName("location")
                    .HasComment("位置");

                entity.Property(e => e.NickName)
                    .HasMaxLength(255)
                    .HasColumnName("nick_name")
                    .HasComment("昵称");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("用户备注（各平台中的用户个人介绍）");

                entity.Property(e => e.Source)
                    .HasMaxLength(255)
                    .HasColumnName("source")
                    .HasComment("用户来源");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新用户");

                entity.Property(e => e.Uuid)
                    .IsRequired()
                    .HasMaxLength(255)
                    .HasColumnName("uuid")
                    .HasComment("第三方平台的用户唯一id");
            });

            modelBuilder.Entity<SysOpLog>(entity =>
            {
                entity.ToTable("sys_op_log");

                entity.HasComment("系统操作日志表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Account)
                    .HasMaxLength(50)
                    .HasColumnName("account")
                    .HasComment("操作账号");

                entity.Property(e => e.Browser)
                    .HasMaxLength(255)
                    .HasColumnName("browser")
                    .HasComment("浏览器");

                entity.Property(e => e.ClassName)
                    .HasMaxLength(500)
                    .HasColumnName("class_name")
                    .HasComment("类名称");

                entity.Property(e => e.Ip)
                    .HasMaxLength(255)
                    .HasColumnName("ip")
                    .HasComment("ip");

                entity.Property(e => e.Location)
                    .HasMaxLength(255)
                    .HasColumnName("location")
                    .HasComment("地址");

                entity.Property(e => e.Message)
                    .HasColumnName("message")
                    .HasComment("具体消息");

                entity.Property(e => e.MethodName)
                    .HasMaxLength(500)
                    .HasColumnName("method_name")
                    .HasComment("方法名称");

                entity.Property(e => e.Name)
                    .HasMaxLength(50)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.OpTime)
                    .HasPrecision(6)
                    .HasColumnName("op_time")
                    .HasComment("操作时间");

                entity.Property(e => e.OpType)
                    .HasColumnName("op_type")
                    .HasComment("操作类型");

                entity.Property(e => e.Os)
                    .HasMaxLength(255)
                    .HasColumnName("os")
                    .HasComment("操作系统");

                entity.Property(e => e.Param)
                    .HasColumnName("param")
                    .HasComment("请求参数");

                entity.Property(e => e.ReqMethod)
                    .HasMaxLength(255)
                    .HasColumnName("req_method")
                    .HasComment("请求方式（GET POST PUT DELETE)");

                entity.Property(e => e.Result)
                    .HasColumnName("result")
                    .HasComment("返回结果");

                entity.Property(e => e.Success)
                    .HasMaxLength(1)
                    .HasColumnName("success")
                    .HasComment("是否执行成功（Y-是，N-否）");

                entity.Property(e => e.Url)
                    .HasMaxLength(500)
                    .HasColumnName("url")
                    .HasComment("请求地址");
            });

            modelBuilder.Entity<SysOrg>(entity =>
            {
                entity.ToTable("sys_org");

                entity.HasComment("系统组织机构表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.Pid)
                    .HasColumnName("pid")
                    .HasComment("父id");

                entity.Property(e => e.Pids)
                    .IsRequired()
                    .HasColumnName("pids")
                    .HasComment("父ids");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("描述");

                entity.Property(e => e.Sort)
                    .HasColumnName("sort")
                    .HasComment("排序");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysPo>(entity =>
            {
                entity.ToTable("sys_pos");

                entity.HasComment("系统职位表");

                entity.HasIndex(e => e.Code, "CODE_UNI");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("备注");

                entity.Property(e => e.Sort)
                    .HasColumnName("sort")
                    .HasComment("排序");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysRole>(entity =>
            {
                entity.ToTable("sys_role");

                entity.HasComment("系统角色表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键id");

                entity.Property(e => e.Code)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("code")
                    .HasComment("编码");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.DataScopeType)
                    .HasColumnName("data_scope_type")
                    .HasDefaultValueSql("1")
                    .HasComment("数据范围类型（字典 1全部数据 2本部门及以下数据 3本部门数据 4仅本人数据 5自定义数据）");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.Remark)
                    .HasMaxLength(255)
                    .HasColumnName("remark")
                    .HasComment("备注");

                entity.Property(e => e.Sort)
                    .HasColumnName("sort")
                    .HasComment("序号");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1停用 2删除）");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysRoleDataScope>(entity =>
            {
                entity.ToTable("sys_role_data_scope");

                entity.HasComment("系统角色数据范围表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.OrgId)
                    .HasColumnName("org_id")
                    .HasComment("机构id");

                entity.Property(e => e.RoleId)
                    .HasColumnName("role_id")
                    .HasComment("角色id");
            });

            modelBuilder.Entity<SysRoleMenu>(entity =>
            {
                entity.ToTable("sys_role_menu");

                entity.HasComment("系统角色菜单表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.MenuId)
                    .HasColumnName("menu_id")
                    .HasComment("菜单id");

                entity.Property(e => e.RoleId)
                    .HasColumnName("role_id")
                    .HasComment("角色id");
            });

            modelBuilder.Entity<SysSm>(entity =>
            {
                entity.ToTable("sys_sms");

                entity.HasComment("短信信息发送表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.BizId)
                    .HasMaxLength(255)
                    .HasColumnName("biz_id")
                    .HasComment("回执id，可根据该id查询具体的发送状态");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.InvalidTime)
                    .HasPrecision(6)
                    .HasColumnName("invalid_time")
                    .HasComment("失效时间");

                entity.Property(e => e.PhoneNumbers)
                    .IsRequired()
                    .HasMaxLength(200)
                    .HasColumnName("phone_numbers")
                    .HasComment("手机号");

                entity.Property(e => e.Source)
                    .HasColumnName("source")
                    .HasComment("来源（字典 1 app， 2 pc， 3 其他）");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("发送状态（字典 0 未发送，1 发送成功，2 发送失败，3 失效）");

                entity.Property(e => e.TemplateCode)
                    .HasMaxLength(255)
                    .HasColumnName("template_code")
                    .HasComment("短信模板ID");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");

                entity.Property(e => e.ValidateCode)
                    .HasMaxLength(255)
                    .HasColumnName("validate_code")
                    .HasComment("短信验证码");
            });

            modelBuilder.Entity<SysTimer>(entity =>
            {
                entity.ToTable("sys_timers");

                entity.HasComment("定时任务");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("定时器id");

                entity.Property(e => e.ActionClass)
                    .HasMaxLength(255)
                    .HasColumnName("action_class")
                    .HasComment("执行任务的class的类名（实现了TimerTaskRunner接口的类的全称）");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Cron)
                    .HasMaxLength(255)
                    .HasColumnName("cron")
                    .HasComment("定时任务表达式");

                entity.Property(e => e.JobStatus)
                    .HasColumnName("job_status")
                    .HasComment("状态（字典 1运行  2停止）");

                entity.Property(e => e.Remark)
                    .HasMaxLength(1000)
                    .HasColumnName("remark")
                    .HasComment("备注信息");

                entity.Property(e => e.TimerName)
                    .HasMaxLength(255)
                    .HasColumnName("timer_name")
                    .HasComment("任务名称");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysUser>(entity =>
            {
                entity.ToTable("sys_user");

                entity.HasComment("系统用户表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Account)
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnName("account")
                    .HasComment("账号");

                entity.Property(e => e.AdminType)
                    .HasColumnName("admin_type")
                    .HasComment("管理员类型（0超级管理员 1非管理员）");

                entity.Property(e => e.Avatar)
                    .HasColumnName("avatar")
                    .HasComment("头像");

                entity.Property(e => e.Birthday)
                    .HasColumnType("date")
                    .HasColumnName("birthday")
                    .HasComment("生日");

                entity.Property(e => e.CreateTime)
                    .HasPrecision(6)
                    .HasColumnName("create_time")
                    .HasComment("创建时间");

                entity.Property(e => e.CreateUser)
                    .HasColumnName("create_user")
                    .HasComment("创建人");

                entity.Property(e => e.Email)
                    .HasMaxLength(50)
                    .HasColumnName("email")
                    .HasComment("邮箱");

                entity.Property(e => e.LastLoginIp)
                    .HasMaxLength(100)
                    .HasColumnName("last_login_ip")
                    .HasComment("最后登陆IP");

                entity.Property(e => e.LastLoginTime)
                    .HasPrecision(6)
                    .HasColumnName("last_login_time")
                    .HasComment("最后登陆时间");

                entity.Property(e => e.Name)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("name")
                    .HasComment("姓名");

                entity.Property(e => e.NickName)
                    .HasMaxLength(50)
                    .HasColumnName("nick_name")
                    .HasComment("昵称");

                entity.Property(e => e.Password)
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnName("password")
                    .HasComment("密码");

                entity.Property(e => e.Phone)
                    .HasMaxLength(50)
                    .HasColumnName("phone")
                    .HasComment("手机");

                entity.Property(e => e.Sex)
                    .HasColumnName("sex")
                    .HasComment("性别(字典 1男 2女 3未知)");

                entity.Property(e => e.Status)
                    .HasColumnName("status")
                    .HasComment("状态（字典 0正常 1冻结 2删除）");

                entity.Property(e => e.Tel)
                    .HasMaxLength(50)
                    .HasColumnName("tel")
                    .HasComment("电话");

                entity.Property(e => e.UpdateTime)
                    .HasPrecision(6)
                    .HasColumnName("update_time")
                    .HasComment("更新时间");

                entity.Property(e => e.UpdateUser)
                    .HasColumnName("update_user")
                    .HasComment("更新人");
            });

            modelBuilder.Entity<SysUserDataScope>(entity =>
            {
                entity.ToTable("sys_user_data_scope");

                entity.HasComment("系统用户数据范围表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.OrgId)
                    .HasColumnName("org_id")
                    .HasComment("机构id");

                entity.Property(e => e.UserId)
                    .HasColumnName("user_id")
                    .HasComment("用户id");
            });

            modelBuilder.Entity<SysUserRole>(entity =>
            {
                entity.ToTable("sys_user_role");

                entity.HasComment("系统用户角色表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.RoleId)
                    .HasColumnName("role_id")
                    .HasComment("角色id");

                entity.Property(e => e.UserId)
                    .HasColumnName("user_id")
                    .HasComment("用户id");
            });

            modelBuilder.Entity<SysVisLog>(entity =>
            {
                entity.ToTable("sys_vis_log");

                entity.HasComment("系统访问日志表");

                entity.Property(e => e.Id)
                    .ValueGeneratedNever()
                    .HasColumnName("id")
                    .HasComment("主键");

                entity.Property(e => e.Account)
                    .HasMaxLength(50)
                    .HasColumnName("account")
                    .HasComment("访问账号");

                entity.Property(e => e.Browser)
                    .HasMaxLength(255)
                    .HasColumnName("browser")
                    .HasComment("浏览器");

                entity.Property(e => e.Ip)
                    .HasMaxLength(255)
                    .HasColumnName("ip")
                    .HasComment("ip");

                entity.Property(e => e.Location)
                    .HasMaxLength(255)
                    .HasColumnName("location")
                    .HasComment("地址");

                entity.Property(e => e.Message)
                    .HasColumnName("message")
                    .HasComment("具体消息");

                entity.Property(e => e.Name)
                    .HasMaxLength(50)
                    .HasColumnName("name")
                    .HasComment("名称");

                entity.Property(e => e.Os)
                    .HasMaxLength(255)
                    .HasColumnName("os")
                    .HasComment("操作系统");

                entity.Property(e => e.Success)
                    .HasMaxLength(1)
                    .HasColumnName("success")
                    .HasComment("是否执行成功（Y-是，N-否）");

                entity.Property(e => e.VisTime)
                    .HasPrecision(6)
                    .HasColumnName("vis_time")
                    .HasComment("访问时间");

                entity.Property(e => e.VisType)
                    .HasColumnName("vis_type")
                    .HasComment("操作类型（字典 1登入 2登出）");
            });

            OnModelCreatingPartial(modelBuilder);
        }

        partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
    }
}
